  Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    ' Cel: ta procedura zasania zdarzenie OnPaint() 
    '      do rysowania wskanika
    '
    ' Lista argumentw:
    '  e       argumenty zdarzenia rysowania
    '
    ' Zwracana warto:
    '  niedostpna 
    '
    ' OSTRZEENIE: Kod napisany w takiej postaci zakada, e 
    '      wartoci dla mTop, mLeftSide, mTall i mWide s poprawne. 
    '      adne ich zmiany nie s wykonywane.

    Dim Canvas As Graphics = e.Graphics
    Dim MyPen As Pen = New Pen(Color.Black)
    Dim MyBrush As SolidBrush = New SolidBrush(Color.Green)
    Dim MyStyle As FontStyle = FontStyle.Regular
    Dim MyFont As Font = New Font("Microsoft Sans Serif", 8, MyStyle)
    Dim NumberOffset As Integer, buff As String
    Dim TickOffset As Integer, TopOffset As Integer, TickValues As Double
    Dim i As Integer

    SetGaugeParameters()         ' Liczymy kilka wartoci pocztkowych

    If mCaution <> 0 Or mDanger <> 0 Then ' Ustawiamy t 
                                          ' lub czerwon lini?
      If mCurrent >= mCaution Then      ' Sprawdzamy, czy warto wymaga
                                        ' zmiany koloru
        MyBrush.Color = Color.Yellow
      End If
      If mCurrent >= mDanger Then
        MyBrush.Color = Color.Red
      End If
    End If

    ' Rysujemy czworokt i wypeniamy go kolorem ta
    Canvas.DrawRectangle(MyPen, mLeftSide, mTopSide, mWide, mTall)
    Canvas.FillRectangle(MyBrush, mLeftSide + 1, mTopSide + 1, _ 
            mWide - 1, mTall - 1)

    MyBrush.Color = Color.Black      ' Resetujemy kolor pdzla dla liczb

    TickOffset = mWide + mLeftSide
    TickValues = mMax
    NumberOffset = MyFont.GetHeight(Canvas) / 2

    For i = 0 To 4            ' Rysujemy znaki kontrolne i wartoci skali
      TopOffset = mTopSide + i * mGap  ' Najpierw rysujemy 
                                       ' znaki kontrolne
      Canvas.DrawLine(MyPen, TickOffset, TopOffset, _ 
                TickOffset + 3, TopOffset)
      buff = Format(TickValues - mTick * i, ".00")  
                ' Teraz rysujemy wartoci skali 
      Canvas.DrawString(buff, MyFont, MyBrush, TickOffset + 5, _
                      TopOffset - NumberOffset)
    Next i

    ' Jest to potrzebne z powodu moliwoci wystpienia bdw 
    ' zaokrglania dla wartoci pikseli podczas rysowania 
    ' znaku kontrolnego dla wartoci minimalnej. 
    ' To rysuje znak kontrolny minimum i jego warto
    Canvas.DrawLine(MyPen, TickOffset, mTopSide + mTall, TickOffset + 3, _
                 mTopSide + mTall)
    Canvas.DrawString(CStr(mMin), MyFont, MyBrush, TickOffset + 5, _
                 mTopSide + mTall - NumberOffset)

    ' Teraz rysujemy wypeniony czworokt dla nieuywanej 
    ' czci wskanika za pomoc biaego pdzla

    MyBrush.Color = Color.White

    ' To okrela, jak gboko narysowa nowy czworokt. Dostosowanie 
    ' przez +/- 1 piksel jest po to, aby nie zasania brzegu wskanika 

    i = (1.0 - mCurrent / mRange) * mTall + (mMin / mRange) * mTall - 1
    Canvas.FillRectangle(MyBrush, mLeftSide + 1, mTopSide + 1, _ 
          mWide - 1, i)

  End Sub
